home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1997 September / Macworld (1997-09).dmg / Serious Software / Cherwell Scientific Demos / pro Fit / pro Fit 5.0 demo (fpu).sea / pro Fit 5.0 demo (fpu) / External Modules / External modules sources / C / FunctionTemplate.c < prev    next >
Text File  |  1996-01-02  |  6KB  |  151 lines

  1. /***************************************************************************************/
  2. /* FunctionTemplate.c                                                                   */
  3. /*                                                                                        */
  4. /*                                                                                     */
  5. /* Version 15.12.95                                                                     */
  6. /***************************************************************************************/
  7.  
  8.  
  9. #include "proFit_interface.h"
  10.  
  11.  
  12.  
  13. /***************************************************************************************/
  14.  
  15. void SetUp (    short* const moduleKind,        /* set moduleKind to isFunction or isProgram */
  16.                 Str255 name,                    /* the name of the program or function (pascal string) */
  17.                 long* const requiredGlobals,    /* the number of bytes to be allocated in ExtModulesParamBlock.globals */
  18.                                                 /* set requiredGlobals to 0 if you don't use this feature */
  19.                 ExtModulesParamBlock* pb)        /* the complete parameter block passed by pro Fit to the */
  20.                                                 /* routines defined in this file. In most cases it can be ignored */
  21. /* SetUp is called once when the external module is linked to proFit */
  22. {
  23.     *moduleKind=isFunction;                /* we define a function */
  24.     SetPascalStr(name,"\p",255);        /* write its name here */
  25.     *requiredGlobals = 0;                /* leave this like it is now if you don't need to allocate global variable    */
  26.                                         /* space using a pointer.*/
  27.                                         /* set this to a pointer size if you want to use*/
  28.                                         /* the pointer "globals" provided in ExtModulesParamBlock*/
  29. }
  30.  
  31. /***************************************************************************************/
  32.  
  33. void InitializeFunc (
  34.                 Boolean* const hasDerivatives,    /* set this to true if you do calculate some derivatives (dyda[]) in the */
  35.                                                 /* "Derivatives" function you define. Any derivatives you don't calculate will be calculated numerically by pro Fit */
  36.                 Str255 descr1stLine,            /* first line of the text in the parameter window */
  37.                 Str255 descr2ndLine,            /* second line of the text in the parameter window */
  38.                 short* const numberOfParams,    /* the number of parameters of the function */
  39.                 DefaultParamInfo* const a0,        /* the default names, values etc. of the parameters */
  40.                 ExtModulesParamBlock* pb)        /* the complete parameter block passed by pro Fit */
  41. /* InitializeFunc is called once (after SetUp has been called) when the external module is linked to proFit */
  42. /* Used to set all the information needed to describe a function */
  43. {
  44.  
  45. }
  46.  
  47.  
  48. /***************************************************************************************/
  49.  
  50. short Check(    short paramNo,                        /* the parameter that was changed */
  51.                 DefaultParamInfo* const a0,        /* the default names, values etc of the paramters */
  52.                 ExtModulesParamBlock* pb)        /* the complete parameter block passed by pro Fit */
  53.     /* Can be left emtpy (returning good) if not needed. */
  54.     /* called when the user has changed a value in the parameters window. This routine */
  55.     /* can then check if this parameters is fine. It can also change some of the */
  56.     /* other entries in a0. The returned values can be: */
  57.     /*    good:        return this value if you agree with the new parameter value */
  58.     /*    update:        return this value if you want the parameters window */
  59.     /*                to be updated because you changed some of the values in a0 */
  60.     /*    bad:        return this value if you want the new parameter value to be refused */
  61.  
  62. {    paramNo--;/*the array a0 is indexed from zero. Decrement paramNo so that it corresponds to the inideces of a0*/
  63.     return ok;
  64. }
  65.  
  66. /***************************************************************************************/
  67.  
  68. void First (    ParamArray a,                /* the new parameters */
  69.                 ExtModulesParamBlock* pb)    /* the complete parameter block passed by pro Fit */
  70.     /* Can be left emtpy if not needed. */
  71.     /* Called whenever the parameters are changed. Can be used to accelerate */
  72.     /* some calculations. See manual for more info */
  73. {
  74.  
  75. }
  76.  
  77.  
  78.  
  79. /***************************************************************************************/
  80.  
  81. void Func (        double x,                        /* the x-value */
  82.                 ParamArray a,                    /* the parameters */
  83.                 double* const y,                /* the y-value to be returned */
  84.                 ExtModulesParamBlock* pb)        /* the complete parameter block passed by pro Fit */
  85.     /* called to calculate the y-value of the function for a given x and a given */
  86.     /* set of parameters */
  87. {
  88.  
  89. }
  90.  
  91.  
  92.  
  93. /***************************************************************************************/
  94.  
  95. void Derivatives(double x,                        /* the x-value */
  96.                 ParamArray a,                    /* the parameters */
  97.                 ParamArray dyda,                /* the derivatives to be returned */
  98.                 ExtModulesParamBlock* pb)        /* the complete parameter block passed by pro Fit */
  99.     /* called to calculate the partial derivatives of the function with respect to */
  100.     /* its parameters. The elements of the array "dyda[i]" must be set to the derivatives of    */
  101.     /* the function with respect to parameter number "i". If any dyda[i] is not set by     */
  102.     /* this function, then the derivatives will be calculated numerically by pro Fit. */
  103.     /* If you set hasDerivatives to false in FuncInitialize, then ALL derivatives will always */
  104.     /* be calcuated numerically by pro Fit, no matter what you do in the function "Derivatives" */
  105.     /* If a derivative is too complicated to be calculated analytically, then don't set the */
  106.     /* corresponding "dyda". pro Fit will notice this and calculate that derivative numerically. */
  107.     /* If you are able to calculate the dyda analytically, do so! By doing this you will make */
  108.     /* fitting much, much faster. */
  109. {
  110.  
  111. }
  112.  
  113.  
  114. /***************************************************************************************/
  115.  
  116. void Last (ExtModulesParamBlock* pb)
  117.     /* Can be left emtpy if not needed. */
  118.     /* Called when calculating is through. See manual for more info */
  119. {
  120.  
  121. }
  122.  
  123. /***************************************************************************************/
  124.  
  125. void CleanUp (ExtModulesParamBlock* pb)
  126.     /* called when the function or program is removed from pro Fit's menus */
  127.     /* in most cases, this function can be empty */
  128. {
  129.  
  130. }
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140. /***************************************************************************************/
  141.                         /* for programs, not used here: */
  142. /***************************************************************************************/
  143.  
  144.  
  145.  
  146. void InitializeProg (ExtModulesParamBlock* pb)
  147. {}
  148.  
  149. void Run(ExtModulesParamBlock* pb)
  150. {}
  151.